package org.wlc.demov1Impl;

import java.math.BigDecimal;

/**
 * @author 王立朝
 * @date 2022/5/11
 * @description: 策略模式的控制类主要是外部可以传递不同的策略实现，在通过统一的方法执行优惠策略计算。
 */
public class Context<T> {
    private ICouponDiscount<T> iCouponDiscount;

    public Context(ICouponDiscount<T> iCouponDiscount) {
        this.iCouponDiscount = iCouponDiscount;
    }

    /**
     * 统计计算折扣后的价格
     *
     * @param couponInfo 折扣类型（满减，直减，N元购，折扣）
     * @param skuPrice   商品
     * @return
     */
    public BigDecimal disAccount(T couponInfo, BigDecimal skuPrice) {
        return iCouponDiscount.discountAmount(couponInfo, skuPrice);
    }
}
